﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Xml;
using Dominio.Logica;
using Dominio.Entidades;
using InterfazPublica;


namespace Interfaz
{
    public partial class MenuPrincipal : Form
    {
        private Login loginForm;

        Agencia agencia = Agencia.GetAgencia();

        public MenuPrincipal(Login l)
        {
            loginForm = l;
            InitializeComponent();
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMUsuarios abmUsuarios = new ABMUsuarios(1);
            abmUsuarios.ShowDialog();
        }

        private void CargarJuegos()
        {
            foreach (IJuegos j in Agencia.ListaEntidades)
            {
                Form f = j.CargarFormulario();
                f.TopLevel = false;
                f.Visible = true;
                f.FormBorderStyle = FormBorderStyle.None;
                f.Dock = DockStyle.Fill;
                TabPage tab = new TabPage(j.GetNombre());
                tab.Controls.Add(f);
                tabControl1.Controls.Add(tab);
                tabControl1.SelectedTab = tab;
            }
        }

        private void MenuPrincipal_Load(object sender, EventArgs e)
        {
            lstJuegos.DataSource = Agencia.ListaJuegos;
            CargarJuegos();
            Usuarios u = Agencia.UsuarioLogueado;
            toolStripStatusLabel1.Text =
                        (u.IdUsuario.ToString() + " / " + u.Nombre + " / " + u.Permisos1.Descripcion);

            //Se ocultan las opciones que ven solo los administradores
            if (u.Permisos != 1)
            {
                linklblAlta.Enabled = false;
                linklblBaja.Enabled = false;
                linklblModif.Enabled = false;
                linklblLogs.Enabled = false;
            }
        }

        private void linklblBaja_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMUsuarios abmUsuarios = new ABMUsuarios(3);
            abmUsuarios.ShowDialog();
        }

        private void linklblModif_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMUsuarios abmUsuarios = new ABMUsuarios(2);
            abmUsuarios.ShowDialog();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int index = tabControl1.SelectedIndex;
            Assembly a = Agencia.ListaAssemblies.ElementAt(index);
            XmlDocument apuesta = Agencia.GetAgencia().RealizarApuesta(Agencia.ListaEntidades.ElementAt(index));
            if (apuesta != null)
            {
                Juegos juego = Agencia.ListaJuegos.ElementAt(index);
                XmlNode xmlElem = apuesta.FirstChild;
                XmlNode NodoApuesta = apuesta.FirstChild.ChildNodes.Item(0);
                string id_apuesta = NodoApuesta.Attributes.GetNamedItem("IdApuesta").Value;
                ConfirmacionApuesta popupConfirm = new ConfirmacionApuesta();
                agencia.GuardarApuesta(apuesta, juego);
                popupConfirm.CargarValores("Se ha confirmado la apuesta:", id_apuesta);
                popupConfirm.ShowDialog();
            }
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void linklblAltaJuego_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMEntidadesJuego abmEntidades = new ABMEntidadesJuego(1);
            abmEntidades.ShowDialog();
        }

        private void salirToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Desea salir de la Random SA?", "Atención", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if (res.ToString().Equals("OK")) { Application.Exit(); }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Desea salir de la Random SA?", "Atención", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if (res.ToString().Equals("OK")) { Application.Exit(); }
        }

        private void linklblRecaudaciones_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Recaudaciones rec = new Recaudaciones();
            rec.ShowDialog();
        }

        private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Pagos pagos = new Pagos();
            pagos.ShowDialog();
        }

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Logs logs = new Logs();
            logs.ShowDialog();

        }

        private void cerrarSesionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            loginForm.Visible = true;
        }

        private void linklblBajaJuego_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMEntidadesJuego abmEntidades = new ABMEntidadesJuego(2);
            abmEntidades.ShowDialog();
        }

        private void linklblModifJuego_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ABMEntidadesJuego abmEntidades = new ABMEntidadesJuego(2);
            abmEntidades.ShowDialog();
        }

        private void linklblComisiones_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ComisionesForm comisiones = new ComisionesForm();
            comisiones.ShowDialog();
        }

        private void linklblGanancias_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Ganancias gananciasForm = new Ganancias();
            gananciasForm.ShowDialog();
        }

        private void lstJuegos_SelectedIndexChanged(object sender, EventArgs e)
        {
            Juegos j = (Juegos)lstJuegos.SelectedItem;
            int tab = Agencia.ListaJuegos.IndexOf(j);
            tabControl1.TabIndex = tab;
        }


    }
}
